import java.util.HashMap;

/**
 * Created by Mr.no.
 * User:yangyun
 * Date:2017/9/1
 * Time:0:27
 */
public class Sum02 {
    /**
     * 给定一个整数的数组，找出其中的两个数使其和为
     * 某个指定数的值，并返回这两个数的下标（数组下标是从0开始）
     * 假设数组元素的值各不相同，则要求时间复杂度为O（n），n为数组的长度
     */
  public static void main (String[] args){
      int[] A = {1,5,7,3};
      int target = 10;
      int[] B = new int[2];
      B = twoSum(A,target);
      for (int b:B
              ) {
          System.out.print(b+" ");
      }
  }

    private static int [] twoSum(int[] a, int target) {
      int [] res={-1,-1};
      if (a==null || a.length<2){
         return res;
      }
        HashMap<Integer,Integer> hm=new HashMap<Integer, Integer>();
      for (int i=0;i<a.length;i++){
          hm.put(a[i],i);
      }
      for (int i=0; i<a.length;i++){
          if (hm.containsKey(target-a[i]) && target!=2*a[i]){
              res[0]=i;
              res[1]=hm.get(target-a[i]);
              break;
          }
      }
      return res;
    }
}
